home *** CD-ROM | disk | FTP | other *** search
/ Champak 52 / Volume 52 - JOGO DISK .iso / Games / skipandgouls.swf / scripts / __Packages / Controller.as next >
Encoding:
Text File  |  2007-10-01  |  8.0 KB  |  248 lines

  1. class Controller
  2. {
  3.    var mcContainer;
  4.    var oEnterFrameListener;
  5.    var oPackaging;
  6.    var bRestartGame;
  7.    var bEndGame;
  8.    var bEndLevelPart;
  9.    var nLevelPart;
  10.    var nLevelPartScore;
  11.    var nLevelPartMinutes;
  12.    var nLevelPartSeconds;
  13.    var oUnlockedCodes;
  14.    var oHUD;
  15.    var oModel;
  16.    var nDifficultyLevel;
  17.    var oGenerator;
  18.    var bSamePart;
  19.    var oGameView;
  20.    var oCam;
  21.    var oLayerFloor;
  22.    var oLayerGame;
  23.    var oLayerBg;
  24.    var oSpongeBob;
  25.    var sLastWaterType;
  26.    var oWater;
  27.    var oMazeView;
  28.    var oAmbiance;
  29.    var bRestarting;
  30.    var nQuality;
  31.    static var QUALITY_LOW = 0;
  32.    static var QUALITY_MEDIUM = 1;
  33.    static var QUALITY_HI = 2;
  34.    function Controller(l_mcTimeline)
  35.    {
  36.       _global.C = this;
  37.       this.mcContainer = l_mcTimeline;
  38.       this.mcContainer.stop();
  39.       this.mcContainer._y = 0;
  40.       mx.transitions.OnEnterFrameBeacon.init();
  41.       this.oEnterFrameListener = new Object();
  42.       this.oEnterFrameListener.onEnterFrame = mx.utils.Delegate.create(this,this.update);
  43.       MovieClip.addListener(this.oEnterFrameListener);
  44.       sarbakan.sound.SoundManager.init(l_mcTimeline);
  45.       this.setQuality();
  46.       this.oPackaging = new Packaging(l_mcTimeline.mcPackaging);
  47.       this.bRestartGame = false;
  48.       this.bEndGame = false;
  49.       this.bEndLevelPart = false;
  50.       this.nLevelPart = 1;
  51.       this.nLevelPartScore = 0;
  52.       this.nLevelPartMinutes = 0;
  53.       this.nLevelPartSeconds = 0;
  54.       this.oUnlockedCodes = SharedObject.getLocal("sbghouls_codes");
  55.    }
  56.    function initGame(l_bSameLevel, l_bNextPart)
  57.    {
  58.       this.mcContainer.gotoAndStop("game");
  59.       sarbakan.visual.PauseManager.reset();
  60.       this.resetElementsID();
  61.       if(!l_bSameLevel)
  62.       {
  63.          if(l_bNextPart)
  64.          {
  65.             this.nLevelPart = this.nLevelPart + 1;
  66.             this.nLevelPartScore = this.oHUD.nScore;
  67.             this.nLevelPartMinutes = this.oHUD.nMinutes;
  68.             this.nLevelPartSeconds = this.oHUD.nSeconds;
  69.          }
  70.          if(this.nLevelPart < 4)
  71.          {
  72.             this.oModel = new maze.MazeModel(maze.MazeData.DIFFICULTY_SETTING[this.nDifficultyLevel].width,maze.MazeData.DIFFICULTY_SETTING[this.nDifficultyLevel]["height" + this.nLevelPart]);
  73.             this.oGenerator = new maze.MazeGenerator(this.oModel);
  74.             this.oGenerator.generate(false);
  75.          }
  76.          else
  77.          {
  78.             this.oModel = new maze.MazeModel(maze.MazeData.BONUS_WIDTH,maze.MazeData.BONUS_HEIGHT);
  79.             this.oGenerator = new maze.MazeGenerator(this.oModel);
  80.             this.oGenerator.generate(true);
  81.          }
  82.       }
  83.       this.bSamePart = l_bSameLevel;
  84.       this.oGameView = new sarbakan.visual.layer.LayerManager(this.oModel.nWidth * maze.MazeData.VIEW_TILE_WIDTH,this.oModel.nHeight * maze.MazeData.VIEW_TILE_HEIGHT,600,300);
  85.       this.oCam = this.oGameView.getCamera();
  86.       this.oLayerFloor = new sarbakan.visual.layer.Layer(this.mcContainer.mcGame.mcFloor,new sarbakan.visual.activation.GridActivation());
  87.       this.oGameView.addLayer(this.oLayerFloor,1,1);
  88.       this.oLayerGame = new sarbakan.visual.layer.Layer(this.mcContainer.mcGame.mcMaze,new sarbakan.visual.activation.GridActivation());
  89.       this.oGameView.addLayer(this.oLayerGame,1,1);
  90.       this.oLayerGame.addCollisionMap(new sarbakan.visual.layer.CollisionMap("floor",this.oLayerGame,12632256));
  91.       this.oLayerGame.oCollisionMaps.floor.setNewSource(this.mcContainer.mcGame.mcFloor);
  92.       this.oLayerGame.oCollisionMaps.floor.show(100);
  93.       this.oLayerBg = new sarbakan.visual.layer.Layer(this.mcContainer.mcGame.mcBg,new sarbakan.visual.activation.NoActivation());
  94.       this.oGameView.addLayer(this.oLayerBg,1,1);
  95.       this.oSpongeBob = new characters.SpongeBob(this.mcContainer.mcGame.mcMaze.mcSpongeBob);
  96.       this.oLayerGame.addDynamicElement(this.oSpongeBob);
  97.       this.oCam.lockOn(mx.utils.Delegate.create(this.oSpongeBob,this.oSpongeBob.getCoord),true);
  98.       if(this.oUnlockedCodes.data.SYRUP_WATER)
  99.       {
  100.          if(this.sLastWaterType == "water")
  101.          {
  102.             this.oWater.mc.removeMovieClip();
  103.          }
  104.          this.mcContainer.mcGame.mcMaze.gotoAndStop("syrup");
  105.          this.sLastWaterType = "syrup";
  106.       }
  107.       else
  108.       {
  109.          this.mcContainer.mcGame.mcMaze.gotoAndStop("water");
  110.          this.sLastWaterType = "water";
  111.       }
  112.       this.oWater = new maze.elements.Water(this.mcContainer.mcGame.mcMaze.mcWater);
  113.       this.oLayerGame.addDynamicElement(this.oWater);
  114.       this.oMazeView = new maze.MazeView(this.oLayerGame,this.oModel);
  115.       this.oMazeView.render();
  116.       this.oHUD = new HUD(this.mcContainer.mcHUD);
  117.       this.oHUD.showGetOut();
  118.       this.oHUD.setScore(this.nLevelPartScore);
  119.       this.oHUD.setTimer(this.nLevelPartMinutes,this.nLevelPartSeconds);
  120.       this.oAmbiance = sarbakan.sound.SoundManager.play("ambiance",maze.MazeData.VOLUME_AMBIANCE,99999,true);
  121.       this.oGameView.update();
  122.    }
  123.    function destroyGame()
  124.    {
  125.       sarbakan.sound.SoundManager.stop(this.oAmbiance);
  126.       this.oGameView.destroy();
  127.       delete this.oGameView;
  128.    }
  129.    function resetElementsID()
  130.    {
  131.       sarbakan.visual.element.BaseElement.resetID();
  132.       sarbakan.visual.element.BaseElement.resetID();
  133.       sarbakan.visual.element.BaseElement.resetID();
  134.       sarbakan.visual.element.BaseElement.resetID();
  135.       sarbakan.visual.element.BaseElement.resetID();
  136.    }
  137.    function endLevelPart()
  138.    {
  139.       this.bEndLevelPart = true;
  140.    }
  141.    function endGame(l_bWin)
  142.    {
  143.       this.nLevelPart = 1;
  144.       this.nLevelPartScore = 0;
  145.       this.nLevelPartMinutes = 0;
  146.       this.nLevelPartSeconds = 0;
  147.       this.oHUD.resetLife();
  148.       this.bEndGame = true;
  149.       if(l_bWin)
  150.       {
  151.          _global.C.oPackaging.goto("endGood" + this.nDifficultyLevel);
  152.       }
  153.       else
  154.       {
  155.          _global.C.oPackaging.goto("endBad");
  156.       }
  157.    }
  158.    function restartGame()
  159.    {
  160.       this.bRestartGame = true;
  161.       this.bRestarting = true;
  162.    }
  163.    function restartFadeMiddle()
  164.    {
  165.       this.destroyGame();
  166.       if(this.nLevelPart <= 3)
  167.       {
  168.          if(this.bRestarting)
  169.          {
  170.             this.initGame(true,false);
  171.             this.bRestarting = false;
  172.          }
  173.          else
  174.          {
  175.             this.initGame(false,true);
  176.          }
  177.       }
  178.    }
  179.    function restartFadeEnd()
  180.    {
  181.       this.mcContainer.mcFade.gotoAndPlay("disabled");
  182.    }
  183.    function setDifficulty(l_nDifficultyLevel)
  184.    {
  185.       this.nDifficultyLevel = l_nDifficultyLevel;
  186.    }
  187.    function togglePause()
  188.    {
  189.       if(sarbakan.visual.PauseManager.bPaused)
  190.       {
  191.          sarbakan.sound.SoundManager.fade(_global.C.oPackaging.oMusic,sarbakan.sound.SoundManager.FADE_VOLUME,maze.MazeData.VOLUME_MUSIC,15);
  192.       }
  193.       else
  194.       {
  195.          sarbakan.sound.SoundManager.fade(_global.C.oPackaging.oMusic,sarbakan.sound.SoundManager.FADE_VOLUME,maze.MazeData.VOLUME_MUSIC / 3,15);
  196.       }
  197.       this.oGameView.togglePause();
  198.    }
  199.    function unlockCode(l_sCodeID)
  200.    {
  201.       if(l_sCodeID == "RESET")
  202.       {
  203.          for(var _loc2_ in this.oUnlockedCodes.data)
  204.          {
  205.             this.oUnlockedCodes.data[_loc2_] = false;
  206.          }
  207.       }
  208.       else
  209.       {
  210.          this.oUnlockedCodes.data[l_sCodeID] = true;
  211.       }
  212.    }
  213.    function update()
  214.    {
  215.       if(this.bRestartGame || this.bEndLevelPart)
  216.       {
  217.          this.mcContainer.mcFade.gotoAndPlay("fade");
  218.          this.bRestartGame = false;
  219.          this.bEndLevelPart = false;
  220.       }
  221.       if(this.bEndGame)
  222.       {
  223.          this.destroyGame();
  224.          this.bEndGame = false;
  225.       }
  226.       if(this.oGameView)
  227.       {
  228.          this.oGameView.update();
  229.          this.oHUD.update();
  230.       }
  231.       else
  232.       {
  233.          this.oPackaging.update();
  234.       }
  235.    }
  236.    function setQuality()
  237.    {
  238.       if(_global.PerformanceTestResult >= 20)
  239.       {
  240.          this.nQuality = Controller.QUALITY_MEDIUM;
  241.       }
  242.       else
  243.       {
  244.          this.nQuality = Controller.QUALITY_LOW;
  245.       }
  246.    }
  247. }
  248.